package com.bingxue.edu.framework.mybatis.query;

import static com.bingxue.edu.framework.common.constant.StringConstants.ID;

/**
 * 关联条件查询
 * 中间表方式暂未实现
 * @author panbo
 * @since 2024/7/1
 */
public @interface Join {

    /**
     * 当前实体类的属性，默认为id
     *
     * @return 属性名称
     */
    String selfField() default ID;

    /**
     * 关联目标实体类
     */
    Class<?> target() default Void.class;

    /**
     * 目标实体类对应的表名。
     * 如果没有指定target属性，需要在这里指定对应表的表名。
     */
    String targetTable() default "";

    /**
     * 目标实体类的关联属性
     */
    String targetField() default ID;

    /**
     * 中间表名称，关联关系是通过通过中间表维护时，需要添加此项配置。
     */
    String joinTable() default "";

    /**
     * 中间表与当前表的关联字段，关系是通过通过中间表维护时，需要添加此项配置。
     */
    String joinSelfColumn() default "";

    /**
     * 目标表的关联字段名称，关系是通过通过中间表维护时，需要添加此项配置。
     */
    String joinTargetColumn() default "";

    /**
     * 关联查询时追加的额外条件
     */
    String extraCondition() default "";
}
